package fr.upmc.tps.mdoc.domain;

import java.util.List;

import fr.upmc.tps.mdoc.models.IContactGroup;

public interface IDAOContactGroup {

	/**
	 * @return La liste des contacts existants dans la base
	 */
	public abstract List<IContactGroup> getGroups();

	/**
	 * Cherche un groupe de contact à partir de son identfiant
	 * 
	 * @param contactId
	 *            l'identifiant du contact
	 * @return retourne un groupe lequel le contact contactId appartient
	 */
	public abstract List<IContactGroup> getGroup(long contactId);

	/**
	 * Cherche un groupe à partir de son identifiant
	 * 
	 * @param groupId
	 *            l'identifiatn du groupe cherché
	 * @return retourne le groupe qui comme identifiant groupId
	 */
	public abstract IContactGroup getGroup(int groupId);

	/**
	 * Met à jour un group existant
	 * 
	 * @param group
	 *            le groupe modifié ou pas qu'on veut mettre à jour dans la base
	 * @return true si le group est mis à jour et false sinon
	 */
	public abstract boolean updateGroup(final IContactGroup group);

	/**
	 * Ajoute dans la base un nouveau groupe
	 * 
	 * @param g
	 *            le groupe qu'il faut ajouter dans la base
	 * @return true si le groupe g est ajouté dans la base et false sinon
	 */
	public abstract boolean addGroup(final IContactGroup g);

	public abstract void removeGroup(final long groupId);

	public abstract IContactGroup loadGroup(final long groupId);

	public abstract List<IContactGroup> getGroups(String name);

}